#!/bin/bash

# 脚本说明
### BEGIN INIT INFO
# Provides:          mongodb
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: MongoDB
# Description:       MongoDB Database Server

# MongoDB 的安装路径，根据实际情况修改
MONGODB_HOME=/usr/local/mongoDB
# MongoDB 命令路径，根据实际情况修改
MONGODB_BIN=$MONGODB_HOME/bin/mongod
# MongoDB 的配置文件路径，根据实际情况修改
MONGODB_CONF=$MONGODB_HOME/etc/mongod.conf

MONGODB_NAME=mongod

# 判断是否安装MongoDB
if [ ! -f $MONGODB_BIN ]; then
  echo "MongoDB 尚未安装，请先安装MongoDB。"
  exit 1
fi

# 启动 MongoDB
startMongoDB() {
  echo "开始启动 MongoDB..."
  # 使用 mongod 命令启动MongoDB，指定配置文件
  $MONGODB_BIN --config $MONGODB_CONF
  # sudo $MONGODB_BIN --config $MONGODB_CONF
  sleep 2
  # 检测MongoDB是否启动成功
  status
  echo "MongoDB 进程ID: $PID"
  if [ -z "$PID" ]; then
    echo "MongoDB 启动失败！"
    exit 1
  fi
  echo "MongoDB 已成功启动！"
}

# 停止 MongoDB
stopMongoDB() {
  echo "准备停止 MongoDB..."

  status

  echo "MongoDB 进程ID: $PID"

  if [[ $PID -eq 0 ]]; then
    echo "Stopping $MONGODB_NAME: "
    exit
  fi
  if [ $PID ]; then
    echo kill $PID start
    kill -9 $PID
  fi
}

# 重启 MongoDB
restart() {
  stop
  sleep 5
  start
}

# 查看MongoDB状态
status() {
  # 使用mongod命令停止MongoDB，首先需要找到MongoDB的进程ID（PID）
  PID=$(ps aux | grep $MONGODB_NAME | grep $MONGODB_CONF | grep -v grep | awk '{print $2}')
  # 如果找到了PID，则使用kill命令来停止MongoDB进程
  if [ -z "$PID" ]; then
    echo "MongoDB  未运行。"
    exit 1
  else
    echo "MongoDB 运行中, 进程ID: $PID"
  fi
}

# 脚本入口
case "$1" in
start)
  startMongoDB
  ;;
stop)
  stopMongoDB
  ;;
status)
  status
  ;;
restart)
  restart
  ;;
*)
  echo "Usage: $0 {start|stop|status|restart}"
  exit 1
  ;;
esac
